#ifndef SL_MAP_HPP
#define SL_MAP_HPP

// std Header
#include <string>
#include <vector>

// Eigene Header
#include "../../MapLoader/Map.hpp"
#include "../System/Exception.hpp"
#include "../Manager/TextureManager.hpp"
#include "Tileset.hpp"
#include "../Manager/RenderTextureManager.hpp"

namespace sl
{
	namespace tmp
	{
		class MapS : public maploader::Map, public Singleton<MapS>
		{
		friend Singleton<MapS>;

		protected:
			MapS();
			MapS(const std::string& file);

		protected:
			std::vector<Tileset> mySpriteTilesets; //Tileset Klasse erstellen
			std::vector<unsigned int> myFirstGID;

		public:
			MapS* Load(const std::string& file);
			MapS* Draw(unsigned int index);
			MapS* Draw(const std::string& layer);
			MapS* Draw();
			unsigned int GetLocalID(unsigned int globalID);
			unsigned int GetTilesetIndex(unsigned int globalID);
		};
	}

	#define TileMap tmp::MapS::GetInstance()
}

#endif //SL_MAP_HPP